<?xslt version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version = "2.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
    <xsl:output method = "text" version = "2.0" encoding = "UTF-8" indent = "yes"/>

    <!-- Variable use for line break-->
    <xsl:variable name = "break">
        <xsl:value-of select = "'&#xA;'"/>
    </xsl:variable>

    <!-- Transform for skills-->
    <xsl:template match = "/ArenaBallSkillsRoot">
        <xsl:text>#summary Skills available in </xsl:text><xsl:value-of select = "@name"/><xsl:text>version </xsl:text><xsl:value-of
            select = "@version"/><xsl:value-of select = "$break"/>
        <xsl:text>&lt;p&gt;Generated Document, changes here will not be saved&lt;/p&gt;</xsl:text><xsl:value-of
            select = "$break"/>
        <xsl:text>=Description des compétences=</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>&lt;wiki:toc max_depth="4" /&gt;</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        <xsl:for-each select = "listOfSkills">
            <xsl:text>==</xsl:text><xsl:value-of select = "name"/><xsl:text>==</xsl:text><xsl:value-of
                select = "$break"/>
            <xsl:text>&lt;p&gt;</xsl:text><xsl:value-of select = "description"/><xsl:text>&lt;/p&gt;</xsl:text><xsl:value-of
                select = "$break"/>
            <xsl:for-each select = "./skill">
                <xsl:sort select = "./name" order = "ascending"/>
                <xsl:apply-templates select = "."/>
            </xsl:for-each>
            <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        </xsl:for-each>
    </xsl:template>

    <!-- Escaping name -->
    <xsl:template match = "name"/>

    <!-- Template for a skill -->
    <xsl:template match = "skill">
        <xsl:text>===</xsl:text><xsl:value-of select = "name"/><xsl:text>===</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>&lt;p&gt;&lt;ul&gt;</xsl:text>
        <xsl:apply-templates select = "*"/>
        <xsl:text>&lt;/ul&gt;&lt;/p&gt;</xsl:text><xsl:value-of select = "$break"/>
    </xsl:template>

    <xsl:template match = "cost">
        <xsl:text>&lt;li&gt;Coût: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "limitation">
        <xsl:text>&lt;li&gt;Limitation: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "description">
        <xsl:text>&lt;li&gt;Description: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "actionMode">
        <xsl:text>&lt;li&gt;Jet d'action </xsl:text>
        <xsl:value-of select = "@type"/>
        <xsl:text>:&lt;ul&gt;</xsl:text>
        <xsl:apply-templates select = "*"/>
        <xsl:text>&lt;/ul&gt;&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "versusMode">
        <xsl:text>&lt;li&gt;Jet d'opposition :&lt;ul&gt;</xsl:text>
        <xsl:apply-templates select = "*"/>
        <xsl:text>&lt;/ul&gt;&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "advancedResult">
        <xsl:apply-templates select = "*"/>
    </xsl:template>

    <xsl:template match = "bonus">
        <xsl:text>&lt;li&gt;Bonus: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "attribute">
        <xsl:text>&lt;li&gt;Attribut: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "attributeDefenser">
        <xsl:text>&lt;li&gt;Attribut du defenser: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "calcul">
        <xsl:text>&lt;li&gt;Calcul: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "result">
        <xsl:text>&lt;li&gt;Résultat: [si:</xsl:text>
        <xsl:value-of select = "if"/>
        <xsl:text>] alors :</xsl:text>
        <xsl:value-of select = "then"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "diceLimitation">
        <xsl:text>&lt;li&gt;Limitation du dé: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "win">
        <xsl:text>&lt;li&gt;Réussite: [si:</xsl:text>
        <xsl:value-of select = "if"/>
        <xsl:text>] alors :</xsl:text>
        <xsl:value-of select = "then"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "draw">
        <xsl:text>&lt;li&gt;Egalité: [si:</xsl:text>
        <xsl:value-of select = "if"/>
        <xsl:text>] alors :</xsl:text>
        <xsl:value-of select = "then"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "lost">
        <xsl:text>&lt;li&gt;Raté: [si:</xsl:text>
        <xsl:value-of select = "if"/>
        <xsl:text>] alors :</xsl:text>
        <xsl:value-of select = "then"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "progression">
        <xsl:text>&lt;li&gt;Progression :&lt;ul&gt;</xsl:text>
        <xsl:if test = "@cumulable=true()">
            <xsl:text>&lt;li&gt;Cumulable&lt;/li&gt;</xsl:text>
        </xsl:if>
        <xsl:apply-templates select = "*"/>
        <xsl:text>&lt;/ul&gt;&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "progRequirement">
        <xsl:text>&lt;li&gt;Pré-requis: </xsl:text>
        <xsl:for-each select = "skillNameRequired">
            <xsl:apply-templates select = "."/>
        </xsl:for-each>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "skillNameRequired">
        <xsl:value-of select = "text()"/>
        <xsl:text> </xsl:text>
    </xsl:template>

    <xsl:template match = "unavailableReason">
        <xsl:text>&lt;li&gt;Indisponible: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "freeReason">
        <xsl:text>&lt;li&gt;Gratuit: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "buyCost">
        <xsl:text>&lt;li&gt;Coût d'achat:</xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>PE&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "keepCost">
        <xsl:text>&lt;li&gt;Entretien:</xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>PE&lt;/li&gt;</xsl:text>
    </xsl:template>

    <xsl:template match = "specialCost">
        <xsl:text>&lt;li&gt;Offre spéciale: </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>&lt;/li&gt;</xsl:text>
    </xsl:template>

    <!-- Transform for Races and Player-->
    <xsl:template match = "/ArenaBallRacesRoot">
        <xsl:text>#summary Races and players available in</xsl:text><xsl:value-of select = "@name"/><xsl:text> version</xsl:text><xsl:value-of
            select = "@version"/><xsl:value-of select = "$break"/>
        <xsl:text>&lt;p&gt;Generated Document, changes here will not be saved&lt;/p&gt;</xsl:text><xsl:value-of
            select = "$break"/>
        <xsl:text>=Description des races et des joueurs=</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>&lt;wiki:toc max_depth="4" /&gt;</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        <xsl:for-each select = "race">
            <xsl:sort select = "name" order = "ascending"/>
            <xsl:text>==</xsl:text><xsl:value-of select = "name"/><xsl:text>==</xsl:text><xsl:value-of
                select = "$break"/>
            <xsl:value-of select = "description"/><xsl:value-of select = "$break"/>
            <xsl:apply-templates select = "listOfPlayers"/>
            <xsl:value-of select = "$break"/>
            <xsl:apply-templates select = "listOfTeamSkills"/>
            <xsl:value-of select = "$break"/>
            <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        </xsl:for-each>
    </xsl:template>

    <xsl:template match = "listOfPlayers">
        <xsl:text>===Joueurs===</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>Joueurs disponibles :</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>||Nom||Coût||Max||[attribute#Force Force]||[attribute#Agilit%C3%A9 Agilité]||[attribute#Constitution Constitution]||[attribute#R%C3%A9activit%C3%A9 Réactivité]||[attribute#Rapidit%C3%A9 Rapidité]||Compétences innées||</xsl:text><xsl:value-of
            select = "$break"/>
        <xsl:for-each select = "player">
            <xsl:text>||</xsl:text><xsl:value-of select = "name"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "cost"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "maxInTeam"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "baseAttributes/strength"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "baseAttributes/agility"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "baseAttributes/constitution"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "baseAttributes/reactivity"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "baseAttributes/speed"/>
            <xsl:text>||</xsl:text>
            <xsl:apply-templates select = "baseSkills"/>
            <xsl:text>||</xsl:text><xsl:value-of select = "$break"/>
        </xsl:for-each>
        <xsl:value-of select = "$break"/>
        <xsl:text>_Note : Cliquer sur une compétence pour accéder à sa définition._</xsl:text><xsl:value-of
            select = "$break"/>
    </xsl:template>

    <xsl:template match = "baseSkills">
        <xsl:for-each select = "skill">
            <xsl:text>[skillDescription#</xsl:text>
            <xsl:value-of select = "replace(escape-html-uri(text()),' ','_')"/>
            <xsl:text> </xsl:text>
            <xsl:value-of select = "text()"/>
            <xsl:text>] </xsl:text>
        </xsl:for-each>
    </xsl:template>

    <xsl:template match = "listOfTeamSkills">
        <xsl:text>===Compétences d'équipe===</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>Compétences d'équipe possédées de bases :</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>&lt;ul&gt;</xsl:text>
        <xsl:apply-templates select = "teamSkill"/>
        <xsl:text>&lt;/ul&gt;</xsl:text><xsl:value-of select = "$break"/>
    </xsl:template>

    <xsl:template match = "teamSkill">
        <xsl:text>&lt;li&gt;[skillDescription#</xsl:text>
        <xsl:value-of select = "replace(escape-html-uri(text()),' ','_')"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select = "text()"/>
        <xsl:text>]&lt;/li&gt;</xsl:text>
    </xsl:template>


    <!-- Transform for goods-->
    <xsl:template match = "/ArenaBallGoodsRoot">
        <xsl:text>#summary Goodsavailable in</xsl:text><xsl:value-of select = "@name"/><xsl:text> version</xsl:text><xsl:value-of
            select = "@version"/><xsl:value-of select = "$break"/>
        <xsl:text>&lt;p&gt;Generated Document, changes here will not be saved&lt;/p&gt;</xsl:text><xsl:value-of
            select = "$break"/>
        <xsl:text>=Description des équipements=</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>&lt;wiki:toc max_depth="4" /&gt;</xsl:text><xsl:value-of select = "$break"/>
        <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        <xsl:for-each select = "good">
            <xsl:sort select = "name" order = "ascending"/>
            <xsl:text>==</xsl:text><xsl:value-of select = "name"/><xsl:text>==</xsl:text><xsl:value-of
                select = "$break"/>
            <xsl:value-of select = "description"/><xsl:value-of select = "$break"/>
            <xsl:text>&lt;ul&gt;</xsl:text>
            <xsl:apply-templates select = "cost"/>
            <xsl:apply-templates select = "limitation"/>
            <xsl:text>&lt;/ul&gt;</xsl:text><xsl:value-of select = "$break"/>
            <xsl:text>----</xsl:text><xsl:value-of select = "$break"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
